#ifndef _MATERIAL_HEADER_
#define _MATERIAL_HEADER_
#include <string>
#include <list>
#include "Shader.h"
#include "GraphicsEngine.h"

class Texture{
public:
	Texture();
	Texture(std::string fName);
	~Texture();
	GLuint GetTexture();
private:
	GLuint texture;
protected:

};

class Material{
public:
	Material();
	Material(ShaderProgram* program, std::list<std::string> props);
	~Material();
	void AssignShader(ShaderProgram* shader);
	void UseMaterial();
	ShaderProgram GetProgram();
	bool IsTransparent();
	void UnBind();
	void SetColour(Colour col);
	Material* GetMaterial();
	Texture GetDiffuse();
	Texture GetNormal();
	Texture GetSpecular();
	Texture GetIllum();
	Texture GetHeight();
	Colour GetColour();
	float GetTiling();
private:
	float tilingMultipler;
	Colour colour;
	ShaderProgram* shader;
	Texture* diffuse;
	Texture* normal;
	Texture* specular;
	Texture* illum;
	Texture* height;
	float translucentcy;
	float tesselationOffset;
	float illumination;
	bool masked;
	float shinyness;
protected:

};

#endif